code%20for%20all%20logo%20transparent%20background.png

QC Professor Data Analysis: Accounting & Information Systems¶


Average GPA of the entire ACCT subject: 2.8, which is equivalent to a B-¶

Hardest class in the entire ACCT subject: ACCT 101 with an average GPA of 2.5, which is equivalent to a C+¶

Average withdrawal rate for the entire ACCT subject: 10.03%¶

Average standard deviation for the entire ACCT subject: 0.91¶


IMPORTANT FUNCTIONS USED IN THIS NOTEBOOK:¶

  • gpa_letter_converter(), which takes in a GPA value and converts it into a letter grade character using tuples (of the float data type) consisting of grade ranges
  • calculate_average_gpas(), which automates the process of going through every class number and also every professor for every class number
  • calculate_teacher_gpas(), which automates the process of going through every professor in a subject irrespective of class number, getting their GPA value, and comparing it to the average GPA for the entire subject

These functions will be used in every subject analysis that we complete per subject!¶


Standard Deviation is used throughout this analysis to measure and compare the grade distributions of every professor in the subject. In the context of the ACCT subject, this tells us about the spread of grades that each student received in a single class. Higher standard deviations indicate that the grades of a class are more spread out from the mean GPA, while a lower standard deviation means that the grades of a class are less spread out and generally closer to the mean GPA value. It should also be noted throughout this analsis that each professor grades differently (such as using a curve), so similar standard deviation values may not mean the same thing.¶


To skip over to the conclusion of this project, which is a non-technical and detailed analysis of the subject, scroll down to the "ACCT Analysis by Class" section.¶


Data Processing & Cleaning¶

In [1]:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import re
import numpy as np
In [2]:
url = "https://docs.google.com/spreadsheets/d/1mS6khEB6m8cPNenNvY9Tg6bJ6YkmcvCI/export?format=csv&gid=1327379612"
df = pd.read_csv(url)

Only a certain amount of columns may be analyzed from the spreadsheet. This includes the official grades, professor, and general class information¶

In [3]:
valid_columns = ["SUBJECT", "NBR", "COURSE NAME", "PROF", "TOTAL", "A+", "A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D", "F", "W", "AVG GPA"]
df = df[valid_columns]

This analysis will only take into account the classes from the ACCT subject, so a separate dataframe must be created. After that, an option must be set so whenever the dataframe is called, it will display as many rows as possible¶

In [4]:
ACCT_df = df.loc[df["SUBJECT"] == "ACCT"]
pd.set_option('display.max_rows', None)
ACCT_df
Out[4]:
SUBJECT NBR COURSE NAME PROF TOTAL A+ A A- B+ B B- C+ C C- D F W AVG GPA
1 ACCT 100 Fin & Mgr Acct HO, V 20 0 5 3 1 5 3 0 0 0 0 0 3 3.382
2 ACCT 101 Intro Thry & Prac of Acct I CHAN, J 29 0 13 1 3 5 0 2 0 0 1 0 4 3.448
3 ACCT 101 Intro Thry & Prac of Acct I FEISULLIN, A 40 5 2 5 4 3 3 8 2 0 0 2 5 2.918
4 ACCT 101 Intro Thry & Prac of Acct I SUN, F 40 0 2 10 3 5 0 1 1 3 5 2 6 2.634
5 ACCT 101 Intro Thry & Prac of Acct I GRUZA, M 40 0 2 4 2 3 3 5 0 0 1 3 15 2.565
6 ACCT 101 Intro Thry & Prac of Acct I RUTHIZER, S 36 1 2 2 3 8 4 4 5 0 1 3 3 2.555
7 ACCT 101 Intro Thry & Prac of Acct I ROSANO, E 40 0 3 4 3 8 2 4 3 6 3 1 3 2.554
8 ACCT 101 Intro Thry & Prac of Acct I COWAN DOCKERY, M 30 4 1 1 1 1 1 1 0 8 0 2 6 2.430
9 ACCT 101 Intro Thry & Prac of Acct I XIAO, J 39 3 3 2 1 0 2 6 2 2 5 5 6 2.139
10 ACCT 101 Intro Thry & Prac of Acct I DAUBER, N 44 1 2 0 1 4 4 6 3 8 4 3 7 2.097
11 ACCT 101 Intro Thry & Prac of Acct I XIAO, J 33 1 1 3 1 3 0 1 4 0 7 7 4 1.739
12 ACCT 102 Intro Theo & Prac Acct II RUTHIZER, S 35 5 5 3 1 8 3 6 3 0 0 0 1 3.126
13 ACCT 102 Intro Theo & Prac Acct II FEISULLIN, A 38 4 2 4 8 4 3 4 2 1 0 1 4 3.036
14 ACCT 102 Intro Theo & Prac Acct II RUBIN, M 28 2 1 0 2 3 3 4 3 3 1 0 6 2.591
15 ACCT 102 Intro Theo & Prac Acct II DAVID, A 40 0 4 0 2 8 7 3 3 2 3 3 5 2.423
16 ACCT 102 Intro Theo & Prac Acct II DAVID, A 33 0 0 4 0 3 5 4 5 1 4 3 4 2.145
17 ACCT 102 Intro Theo & Prac Acct II GRUZA, M 17 0 1 0 0 1 2 2 0 0 2 3 6 1.727
18 ACCT 201 Intermediate Accounting l SATENSTEIN, J 36 17 9 1 4 3 1 0 1 0 0 0 0 3.739
19 ACCT 201 Intermediate Accounting l BARONE, E 19 4 1 2 1 1 1 1 2 0 0 1 5 3.050
20 ACCT 201 Intermediate Accounting l HEASLIP, K 34 1 2 3 2 3 5 4 4 3 0 2 5 2.569
21 ACCT 201 Intermediate Accounting l HEASLIP, K 15 0 1 1 3 0 1 1 5 2 0 1 0 2.400
22 ACCT 201 Intermediate Accounting l COWAN DOCKERY, M 27 3 1 0 1 2 0 1 3 6 0 4 6 2.086
23 ACCT 202 Intermediate Accounting II SCHWALB, H 27 0 5 1 1 0 4 2 8 0 1 0 4 2.700
24 ACCT 202 Intermediate Accounting II KUMAR, V 12 0 3 0 0 1 0 0 3 0 0 1 3 2.625
25 ACCT 202 Intermediate Accounting II HEASLIP, K 31 1 3 2 1 2 5 1 3 4 0 4 5 2.358
26 ACCT 261 Business Law I STEIN, R 40 1 12 4 10 6 2 0 0 0 0 0 4 3.520
27 ACCT 261 Business Law I STEIN, R 29 1 3 7 9 3 2 0 0 0 0 0 2 3.440
28 ACCT 261 Business Law I KIRSCHNER, D 19 0 0 6 2 0 4 3 1 1 0 0 2 2.953
29 ACCT 261 Business Law I LEIBOWICZ, B 36 0 3 4 3 8 1 4 7 4 0 0 0 2.747
30 ACCT 261 Business Law I ALTMAN, J 40 1 6 5 2 10 1 2 6 0 6 1 0 2.710
31 ACCT 261 Business Law I ALTMAN, J 35 0 3 3 3 3 7 4 4 0 4 0 3 2.648
32 ACCT 305 Cost Accounting COHEN, M 35 0 9 5 9 5 3 0 1 0 0 0 3 3.416
33 ACCT 305 Cost Accounting COHEN, M 41 2 8 7 8 8 4 1 1 0 0 0 2 3.369
34 ACCT 305 Cost Accounting QURESHI, A 23 4 5 1 1 3 0 0 2 0 0 1 5 3.294
35 ACCT 305 Cost Accounting SUN, T 19 6 1 0 1 2 0 2 2 0 0 3 2 2.700
36 ACCT 306 Quant Techniq Pln & Ctrl ADELBERG, A 69 12 27 6 9 4 1 2 4 0 0 0 4 3.618
37 ACCT 306 Quant Techniq Pln & Ctrl STEVENS, M 40 1 6 10 7 8 2 2 0 0 0 0 4 3.392
38 ACCT 311 Advanced Accounting BALKARAN, D 21 0 6 3 2 4 0 1 1 0 0 1 3 3.222
39 ACCT 311 Advanced Accounting SATENSTEIN, J 36 8 2 0 3 5 4 2 6 0 2 1 3 2.858
40 ACCT 311 Advanced Accounting SATENSTEIN, J 35 9 1 1 2 4 4 2 4 0 0 4 4 2.765
41 ACCT 311 Advanced Accounting HUANG, Q 23 7 1 2 1 1 0 1 2 0 2 5 1 2.455
42 ACCT 321 Auditing I QAMAR, Z 40 8 9 4 5 6 1 1 3 0 0 0 3 3.468
43 ACCT 321 Auditing I FITZSIMONS, S 25 0 2 2 2 8 2 2 4 0 0 0 1 2.909
44 ACCT 321 Auditing I UDDIN, M 13 0 0 0 3 4 0 2 0 0 0 1 2 2.650
45 ACCT 321 Auditing I DAUBER, N 40 5 2 2 1 2 2 4 3 4 5 5 5 2.203
46 ACCT 322 Auditing II FITZSIMONS, S 12 0 2 1 4 2 2 0 1 0 0 0 0 3.192
47 ACCT 322 Auditing II DAUBER, N 40 4 2 3 7 5 5 4 7 0 0 0 3 2.970
48 ACCT 322 Auditing II HITZIG, N 26 0 2 2 1 5 2 8 6 0 0 0 0 2.673
49 ACCT 322 Auditing II HITZIG, N 16 0 1 0 0 0 1 1 6 4 1 0 2 2.057
50 ACCT 341 Accounting Information Systems SUH, J 18 0 3 1 0 3 2 0 0 1 1 7 0 1.822
51 ACCT 343 Microcomputer Applications QURESHI, A 20 0 15 0 0 0 0 0 1 0 0 1 1 3.647
52 ACCT 343 Microcomputer Applications QURESHI, A 20 0 14 1 0 2 0 0 3 0 0 0 0 3.585
53 ACCT 350 Financial Statement Analysis SILVERMAN, A 12 4 0 0 0 4 1 0 0 0 0 1 2 3.070
54 ACCT 362 Business Law II KATZ, J 29 6 2 2 2 5 4 0 5 0 0 0 3 3.146
55 ACCT 362 Business Law II ALTMAN, J 22 3 2 3 1 1 4 3 3 0 1 0 1 2.957
56 ACCT 363 Business Law III HERCZOG, L 14 0 2 6 4 2 0 0 0 0 0 0 0 3.529
57 ACCT 363 Business Law III LINN, D 20 2 3 0 4 2 5 1 0 0 0 0 2 3.235
58 ACCT 367 Fed & Ny State Tax BLUMENFRUCHT, I 59 5 9 6 9 12 14 2 1 0 0 0 1 3.247
59 ACCT 367 Fed & Ny State Tax CALAMARI, J 12 0 4 1 1 1 0 2 2 1 0 0 0 3.025
60 ACCT 367 Fed & Ny State Tax BARONE, E 33 4 2 3 2 5 2 4 5 1 4 0 1 2.719
61 ACCT 367 Fed & Ny State Tax LEIBOWICZ, B 20 1 0 1 0 2 0 2 4 0 4 1 2 2.020
62 ACCT 372 Gov & Not for Profit Acct&Aud BALKARAN, D 43 0 9 10 7 5 3 1 2 0 0 2 4 3.218
63 ACCT 372 Gov & Not for Profit Acct&Aud SILVERMAN, A 40 4 5 2 2 2 5 6 6 0 2 3 3 2.630
64 ACCT 372 Gov & Not for Profit Acct&Aud SUN, F 37 0 1 1 3 8 8 5 6 0 3 0 2 2.563
65 ACCT 385 Data Analytics for Accountants SOLIERI, S 16 2 2 1 3 0 1 0 2 0 0 2 3 2.792
66 ACCT 712 Adv Fin Acct Theory HUANG, Q 19 13 4 0 2 0 0 0 0 0 0 0 0 3.926
67 ACCT 712 Adv Fin Acct Theory HITZIG, N 20 0 4 1 2 3 0 6 0 4 0 0 0 2.795
68 ACCT 747 Tax & Accounting Communication ZARATE, G 38 29 8 0 0 0 0 0 0 0 0 0 0 4.000
69 ACCT 757 Fed Taxation of Business Ent BALKARAN, D 16 0 4 1 2 5 3 0 0 0 0 0 1 3.293
70 ACCT 757 Fed Taxation of Business Ent STEVENS, M 21 5 1 2 0 1 2 1 1 1 0 3 4 2.694
71 ACCT 758 State & Local Tax & Tax-Exempt KUMAR, V 10 0 6 0 0 4 0 0 0 0 0 0 0 3.600
72 ACCT 760 IRS Ethical Tax Prac & Proc BARONE, E 13 0 5 0 2 6 0 0 0 0 0 0 0 3.431
73 ACCT 762 Deferred Comp & Employee Benef KUMAR, V 12 2 8 0 0 2 0 0 0 0 0 0 0 3.833
74 ACCT 785 Data Analytics for Accountants SOLIERI, S 14 8 3 0 0 0 1 0 1 0 0 0 1 3.746
75 ACCT 785 Data Analytics for Accountants SUH, J 20 5 4 2 5 1 0 3 0 0 0 0 0 3.490
76 ACCT 362W Business Law II HERCZOG, L 21 1 6 5 5 2 1 0 0 0 0 0 1 3.585
77 ACCT 362W Business Law II LINN, D 32 0 9 5 4 6 4 2 0 0 0 0 1 3.370
78 ACCT 362W Business Law II SEYMORE, J 10 0 1 1 0 4 2 0 1 0 0 0 1 3.011

From this, it can be concluded that the ACCT has no classes where the GPA is 0 so there are no null values. However, the data contains data for non-undergraduate classes, so it must be cleaned by using regular expressions and Boolean masking¶

In [5]:
# The class number must start with a digit from 1-3, followed by 2 digits from 0-9
# The number can also have a W at the end to represent writing-intensive classes

CourseNumberPattern = r'^[1-3][0-9]{2}W?$'

mask = ACCT_df['NBR'].str.contains(CourseNumberPattern) # Finds what rows match the regular expression pattern
In [6]:
ACCT_df = ACCT_df[mask] # If mask is false, the rows must be entirely removed from the dataframe to prevent false results
ACCT_df
Out[6]:
SUBJECT NBR COURSE NAME PROF TOTAL A+ A A- B+ B B- C+ C C- D F W AVG GPA
1 ACCT 100 Fin & Mgr Acct HO, V 20 0 5 3 1 5 3 0 0 0 0 0 3 3.382
2 ACCT 101 Intro Thry & Prac of Acct I CHAN, J 29 0 13 1 3 5 0 2 0 0 1 0 4 3.448
3 ACCT 101 Intro Thry & Prac of Acct I FEISULLIN, A 40 5 2 5 4 3 3 8 2 0 0 2 5 2.918
4 ACCT 101 Intro Thry & Prac of Acct I SUN, F 40 0 2 10 3 5 0 1 1 3 5 2 6 2.634
5 ACCT 101 Intro Thry & Prac of Acct I GRUZA, M 40 0 2 4 2 3 3 5 0 0 1 3 15 2.565
6 ACCT 101 Intro Thry & Prac of Acct I RUTHIZER, S 36 1 2 2 3 8 4 4 5 0 1 3 3 2.555
7 ACCT 101 Intro Thry & Prac of Acct I ROSANO, E 40 0 3 4 3 8 2 4 3 6 3 1 3 2.554
8 ACCT 101 Intro Thry & Prac of Acct I COWAN DOCKERY, M 30 4 1 1 1 1 1 1 0 8 0 2 6 2.430
9 ACCT 101 Intro Thry & Prac of Acct I XIAO, J 39 3 3 2 1 0 2 6 2 2 5 5 6 2.139
10 ACCT 101 Intro Thry & Prac of Acct I DAUBER, N 44 1 2 0 1 4 4 6 3 8 4 3 7 2.097
11 ACCT 101 Intro Thry & Prac of Acct I XIAO, J 33 1 1 3 1 3 0 1 4 0 7 7 4 1.739
12 ACCT 102 Intro Theo & Prac Acct II RUTHIZER, S 35 5 5 3 1 8 3 6 3 0 0 0 1 3.126
13 ACCT 102 Intro Theo & Prac Acct II FEISULLIN, A 38 4 2 4 8 4 3 4 2 1 0 1 4 3.036
14 ACCT 102 Intro Theo & Prac Acct II RUBIN, M 28 2 1 0 2 3 3 4 3 3 1 0 6 2.591
15 ACCT 102 Intro Theo & Prac Acct II DAVID, A 40 0 4 0 2 8 7 3 3 2 3 3 5 2.423
16 ACCT 102 Intro Theo & Prac Acct II DAVID, A 33 0 0 4 0 3 5 4 5 1 4 3 4 2.145
17 ACCT 102 Intro Theo & Prac Acct II GRUZA, M 17 0 1 0 0 1 2 2 0 0 2 3 6 1.727
18 ACCT 201 Intermediate Accounting l SATENSTEIN, J 36 17 9 1 4 3 1 0 1 0 0 0 0 3.739
19 ACCT 201 Intermediate Accounting l BARONE, E 19 4 1 2 1 1 1 1 2 0 0 1 5 3.050
20 ACCT 201 Intermediate Accounting l HEASLIP, K 34 1 2 3 2 3 5 4 4 3 0 2 5 2.569
21 ACCT 201 Intermediate Accounting l HEASLIP, K 15 0 1 1 3 0 1 1 5 2 0 1 0 2.400
22 ACCT 201 Intermediate Accounting l COWAN DOCKERY, M 27 3 1 0 1 2 0 1 3 6 0 4 6 2.086
23 ACCT 202 Intermediate Accounting II SCHWALB, H 27 0 5 1 1 0 4 2 8 0 1 0 4 2.700
24 ACCT 202 Intermediate Accounting II KUMAR, V 12 0 3 0 0 1 0 0 3 0 0 1 3 2.625
25 ACCT 202 Intermediate Accounting II HEASLIP, K 31 1 3 2 1 2 5 1 3 4 0 4 5 2.358
26 ACCT 261 Business Law I STEIN, R 40 1 12 4 10 6 2 0 0 0 0 0 4 3.520
27 ACCT 261 Business Law I STEIN, R 29 1 3 7 9 3 2 0 0 0 0 0 2 3.440
28 ACCT 261 Business Law I KIRSCHNER, D 19 0 0 6 2 0 4 3 1 1 0 0 2 2.953
29 ACCT 261 Business Law I LEIBOWICZ, B 36 0 3 4 3 8 1 4 7 4 0 0 0 2.747
30 ACCT 261 Business Law I ALTMAN, J 40 1 6 5 2 10 1 2 6 0 6 1 0 2.710
31 ACCT 261 Business Law I ALTMAN, J 35 0 3 3 3 3 7 4 4 0 4 0 3 2.648
32 ACCT 305 Cost Accounting COHEN, M 35 0 9 5 9 5 3 0 1 0 0 0 3 3.416
33 ACCT 305 Cost Accounting COHEN, M 41 2 8 7 8 8 4 1 1 0 0 0 2 3.369
34 ACCT 305 Cost Accounting QURESHI, A 23 4 5 1 1 3 0 0 2 0 0 1 5 3.294
35 ACCT 305 Cost Accounting SUN, T 19 6 1 0 1 2 0 2 2 0 0 3 2 2.700
36 ACCT 306 Quant Techniq Pln & Ctrl ADELBERG, A 69 12 27 6 9 4 1 2 4 0 0 0 4 3.618
37 ACCT 306 Quant Techniq Pln & Ctrl STEVENS, M 40 1 6 10 7 8 2 2 0 0 0 0 4 3.392
38 ACCT 311 Advanced Accounting BALKARAN, D 21 0 6 3 2 4 0 1 1 0 0 1 3 3.222
39 ACCT 311 Advanced Accounting SATENSTEIN, J 36 8 2 0 3 5 4 2 6 0 2 1 3 2.858
40 ACCT 311 Advanced Accounting SATENSTEIN, J 35 9 1 1 2 4 4 2 4 0 0 4 4 2.765
41 ACCT 311 Advanced Accounting HUANG, Q 23 7 1 2 1 1 0 1 2 0 2 5 1 2.455
42 ACCT 321 Auditing I QAMAR, Z 40 8 9 4 5 6 1 1 3 0 0 0 3 3.468
43 ACCT 321 Auditing I FITZSIMONS, S 25 0 2 2 2 8 2 2 4 0 0 0 1 2.909
44 ACCT 321 Auditing I UDDIN, M 13 0 0 0 3 4 0 2 0 0 0 1 2 2.650
45 ACCT 321 Auditing I DAUBER, N 40 5 2 2 1 2 2 4 3 4 5 5 5 2.203
46 ACCT 322 Auditing II FITZSIMONS, S 12 0 2 1 4 2 2 0 1 0 0 0 0 3.192
47 ACCT 322 Auditing II DAUBER, N 40 4 2 3 7 5 5 4 7 0 0 0 3 2.970
48 ACCT 322 Auditing II HITZIG, N 26 0 2 2 1 5 2 8 6 0 0 0 0 2.673
49 ACCT 322 Auditing II HITZIG, N 16 0 1 0 0 0 1 1 6 4 1 0 2 2.057
50 ACCT 341 Accounting Information Systems SUH, J 18 0 3 1 0 3 2 0 0 1 1 7 0 1.822
51 ACCT 343 Microcomputer Applications QURESHI, A 20 0 15 0 0 0 0 0 1 0 0 1 1 3.647
52 ACCT 343 Microcomputer Applications QURESHI, A 20 0 14 1 0 2 0 0 3 0 0 0 0 3.585
53 ACCT 350 Financial Statement Analysis SILVERMAN, A 12 4 0 0 0 4 1 0 0 0 0 1 2 3.070
54 ACCT 362 Business Law II KATZ, J 29 6 2 2 2 5 4 0 5 0 0 0 3 3.146
55 ACCT 362 Business Law II ALTMAN, J 22 3 2 3 1 1 4 3 3 0 1 0 1 2.957
56 ACCT 363 Business Law III HERCZOG, L 14 0 2 6 4 2 0 0 0 0 0 0 0 3.529
57 ACCT 363 Business Law III LINN, D 20 2 3 0 4 2 5 1 0 0 0 0 2 3.235
58 ACCT 367 Fed & Ny State Tax BLUMENFRUCHT, I 59 5 9 6 9 12 14 2 1 0 0 0 1 3.247
59 ACCT 367 Fed & Ny State Tax CALAMARI, J 12 0 4 1 1 1 0 2 2 1 0 0 0 3.025
60 ACCT 367 Fed & Ny State Tax BARONE, E 33 4 2 3 2 5 2 4 5 1 4 0 1 2.719
61 ACCT 367 Fed & Ny State Tax LEIBOWICZ, B 20 1 0 1 0 2 0 2 4 0 4 1 2 2.020
62 ACCT 372 Gov & Not for Profit Acct&Aud BALKARAN, D 43 0 9 10 7 5 3 1 2 0 0 2 4 3.218
63 ACCT 372 Gov & Not for Profit Acct&Aud SILVERMAN, A 40 4 5 2 2 2 5 6 6 0 2 3 3 2.630
64 ACCT 372 Gov & Not for Profit Acct&Aud SUN, F 37 0 1 1 3 8 8 5 6 0 3 0 2 2.563
65 ACCT 385 Data Analytics for Accountants SOLIERI, S 16 2 2 1 3 0 1 0 2 0 0 2 3 2.792
76 ACCT 362W Business Law II HERCZOG, L 21 1 6 5 5 2 1 0 0 0 0 0 1 3.585
77 ACCT 362W Business Law II LINN, D 32 0 9 5 4 6 4 2 0 0 0 0 1 3.370
78 ACCT 362W Business Law II SEYMORE, J 10 0 1 1 0 4 2 0 1 0 0 0 1 3.011
In [7]:
ACCT_df.shape
Out[7]:
(68, 18)

Exploratory Data Analysis (EDA)¶

The isinstance() function used returns True if the specified object matches the specified data type, and returns False otherwise. If the number_grade matches a value in a tuple, it falls into the range needed for its corresponding letter grade.¶

(https://stackoverflow.com/questions/1549801/what-are-the-differences-between-type-and-isinstance)¶

In pandas, both unique and nunique are used to get unique values of a series object, but they serve different purposes and return different types of output:¶

  • unique(): This function returns an array of all unique values in the order that they appear in the original DataFrame or Series. It's useful when you want to see or use the actual unique values (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html)

  • nunique(): This function returns an integer that represents the number of unique values. It's useful when you just want to know how many unique values exist, rather than what those unique values are (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.nunique.html)

iloc[]:¶

  • Purely integer-location based indexing for selection by position (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html)

sort_values():¶

  • Sort by values along either axis (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html)
In [8]:
def gpa_letter_converter(gpa):
    letter_grades = {
        "A": 4.0, 
        "A-": (3.7, 3.8, 3.9), 
        "B+": (3.3, 3.4, 3.5, 3.6), 
        "B": (3.0, 3.1, 3.2), 
        "B-": (2.7, 2.8, 2.9), 
        "C+": (2.3, 2.4, 2.5, 2.6),
        "C": (2.0, 2.1, 2.2), 
        "C-": (1.7, 1.8, 1.9),
        "D": (1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6),
        "F": (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)
    }
    for letter_grade, number_grade in letter_grades.items():
        if isinstance(number_grade, float) and gpa == number_grade:
            return letter_grade
        elif isinstance(number_grade, tuple) and gpa in number_grade:
            return letter_grade
    
    return None

def calculate_average_gpas(df):
    # Prepare a list to store the results
    results = []

    # GPA equivalents for each letter grade
    letter_grades_to_gpa = {
        "A+": 4.0,
        "A": 4.0,
        "A-": 3.7,
        "B+": 3.3,
        "B": 3.0,
        "B-": 2.7,
        "C+": 2.3,
        "C": 2.0,
        "C-": 1.7,
        "D": 1.0,
        "F": 0.0
    }

    # Loop over all unique course numbers
    for class_nbr in df["NBR"].unique():
        # Filter the DataFrame for the current course number
        df_nbr = df[df["NBR"] == class_nbr]

        # Loop over all unique professors for the current course number
        for prof in df_nbr["PROF"].unique():
            # Filter the DataFrame for the current professor
            df_prof = df_nbr[df_nbr["PROF"] == prof]

            # Calculate the average GPA for the current professor and course number
            avg_gpa_prof = round(df_prof["AVG GPA"].mean(), 1)

            # Convert the individual grade counts to GPA equivalents and calculate the standard deviation
            gpa_distributions = []
            for grade_letter, gpa in letter_grades_to_gpa.items():
                gpa_distributions.extend([gpa] * df_prof[grade_letter].sum())
            std_dev_gpa_prof = round(np.std(gpa_distributions), 2)

            # Append the result to the list
            results.append({
                "CLASS NUMBER": class_nbr,
                "PROF": prof,
                "AVG GPA PROF": avg_gpa_prof,
                "AVG GPA PROF LETTER": gpa_letter_converter(avg_gpa_prof),
                "STD DEV GPA PROF": std_dev_gpa_prof
            })

        # If there is more than one professor for this course, calculate the average GPA for the current course number, regardless of the professor
        if df_nbr["PROF"].nunique() > 1:
            avg_gpa_nbr = round(df_nbr["AVG GPA"].mean(), 1)

            # Convert the individual grade counts to GPA equivalents and calculate the standard deviation
            gpa_distributions = []
            for grade_letter, gpa in letter_grades_to_gpa.items():
                gpa_distributions.extend([gpa] * df_nbr[grade_letter].sum())
            std_dev_gpa_nbr = round(np.std(gpa_distributions), 2)

            # Append the result to the list
            results.append({
                "CLASS NUMBER": class_nbr,
                "PROF": "All Professors",
                "AVG GPA PROF": avg_gpa_nbr,
                "AVG GPA PROF LETTER": gpa_letter_converter(avg_gpa_nbr),
                "STD DEV GPA PROF": std_dev_gpa_nbr
            })

    # Convert the list of results to a DataFrame
    df_results = pd.DataFrame(results)
    
    # Find the hardest class based on average GPA
    hardest_class = df_results[df_results["PROF"] == "All Professors"].sort_values("AVG GPA PROF").iloc[0]

    # Calculate the average GPA for the entire subject
    avg_gpa_subject = round(df["AVG GPA"].mean(), 1)

    print(f"The average GPA for this entire subject in Spring 2023 was: {avg_gpa_subject}, which is equal to a {gpa_letter_converter(avg_gpa_subject)}")
    print(f"The hardest class based on average GPA in Spring 2023 was ACCT {hardest_class['CLASS NUMBER']} with an average GPA of {hardest_class['AVG GPA PROF']}, which is equal to a {hardest_class['AVG GPA PROF LETTER']}")
    print("\nStandard deviation tells us about the spread of the grades that students received in each class. A higher standard deviation indicates a wider range of grades, while a lower standard deviation indicates that grades were more closely clustered around the average.")

    return df_results

def calculate_teacher_gpas(df):
    # Prepare a list to store the results
    results = []

    # GPA equivalents for each letter grade
    letter_grades_to_gpa = {
        "A+": 4.0,
        "A": 4.0,
        "A-": 3.7,
        "B+": 3.3,
        "B": 3.0,
        "B-": 2.7,
        "C+": 2.3,
        "C": 2.0,
        "C-": 1.7,
        "D": 1.0,
        "F": 0.0
    }

    # Loop over all unique professors
    for prof in sorted(df["PROF"].unique()):
        # Filter the DataFrame for the current professor
        df_prof = df[df["PROF"] == prof]

        # Calculate the average GPA for the current professor
        avg_gpa_prof = round(df_prof["AVG GPA"].mean(), 1)

        # Convert the individual grade counts to GPA equivalents and calculate the standard deviation
        gpa_distributions = []
        for grade_letter, gpa in letter_grades_to_gpa.items():
            gpa_distributions.extend([gpa] * df_prof[grade_letter].sum())
        std_dev_gpa_prof = round(np.std(gpa_distributions), 1)

        # Calculate the percentage of students who withdrew for the current professor
        withdraw_percentage = df_prof["W"].sum() / df_prof["TOTAL"].sum()

        # Append the result to the list
        results.append({
            "PROF": prof,
            "AVG GPA PROF": avg_gpa_prof,
            "AVG GPA PROF LETTER": gpa_letter_converter(avg_gpa_prof),
            "STD DEV GPA PROF": std_dev_gpa_prof,
            "NUM OF CLASSES": len(df_prof),
            "WITHDRAW PERCENTAGE": round(withdraw_percentage * 100, 1)
        })

    # Convert the list of results to a DataFrame
    df_results = pd.DataFrame(results)

    # Calculate the average GPA for the entire subject
    avg_gpa_subject = round(df["AVG GPA"].mean(), 1)

    # Calculate the average standard deviation for the entire subject
    gpa_distributions = []
    for grade_letter, gpa in letter_grades_to_gpa.items():
        gpa_distributions.extend([gpa] * df[grade_letter].sum())
    avg_std_dev_subject = round(np.std(gpa_distributions), 1)
    
    # Calculate the average withdrawal percentage for the entire subject
    withdraw_percentage_subject = round((df["W"].sum() / df["TOTAL"].sum()) * 100, 2)
    
    # Find the professors who teach more than one class, have a GPA that is the same or higher than the subject average GPA,
    # and for whom less than 40% of students withdrew
    best_profs = df_results[(df_results["NUM OF CLASSES"] > 1) & (df_results["AVG GPA PROF"] >= avg_gpa_subject) & (df_results["WITHDRAW PERCENTAGE"] <= withdraw_percentage_subject)]

    print(f"Professors who teach more than one class, have a GPA that is the same or higher than the subject average GPA ({avg_gpa_subject}), and have a withdrawal percentage that is less or equal than the subject average withdrawal percentage ({withdraw_percentage_subject}%):\n")
    print(best_profs, "\n")
    print("Please note that this automated analysis does not take ratings from RMP (RateMyProfessors) into account. While the provided statistics are based on GPA, it cannot conclude the amount of material students learned from each professor.\n")
    print(f"The average standard deviation of GPA for all professors in this subject in Spring 2023 was: {avg_std_dev_subject}")

    return df_results
In [9]:
ACCT_class_analysis = calculate_average_gpas(ACCT_df)
ACCT_class_analysis
The average GPA for this entire subject in Spring 2023 was: 2.8, which is equal to a B-
The hardest class based on average GPA in Spring 2023 was ACCT 101 with an average GPA of 2.5, which is equal to a C+

Standard deviation tells us about the spread of the grades that students received in each class. A higher standard deviation indicates a wider range of grades, while a lower standard deviation indicates that grades were more closely clustered around the average.
Out[9]:
CLASS NUMBER PROF AVG GPA PROF AVG GPA PROF LETTER STD DEV GPA PROF
0 100 HO, V 3.4 B+ 0.51
1 101 CHAN, J 3.4 B+ 0.74
2 101 FEISULLIN, A 2.9 B- 1.00
3 101 SUN, F 2.6 C+ 1.22
4 101 GRUZA, M 2.6 C+ 1.21
5 101 RUTHIZER, S 2.6 C+ 1.04
6 101 ROSANO, E 2.6 C+ 0.96
7 101 COWAN DOCKERY, M 2.4 C+ 1.25
8 101 XIAO, J 1.9 C- 1.39
9 101 DAUBER, N 2.1 C 1.01
10 101 All Professors 2.5 C+ 1.20
11 102 RUTHIZER, S 3.1 B 0.71
12 102 FEISULLIN, A 3.0 B 0.84
13 102 RUBIN, M 2.6 C+ 0.79
14 102 DAVID, A 2.3 C+ 1.08
15 102 GRUZA, M 1.7 C- 1.33
16 102 All Professors 2.5 C+ 1.04
17 201 SATENSTEIN, J 3.7 A- 0.48
18 201 BARONE, E 3.0 B 1.12
19 201 HEASLIP, K 2.5 C+ 0.99
20 201 COWAN DOCKERY, M 2.1 C 1.31
21 201 All Professors 2.8 B- 1.15
22 202 SCHWALB, H 2.7 B- 0.88
23 202 KUMAR, V 2.6 C+ 1.32
24 202 HEASLIP, K 2.4 C+ 1.26
25 202 All Professors 2.6 C+ 1.14
26 261 STEIN, R 3.5 B+ 0.41
27 261 KIRSCHNER, D 3.0 B 0.67
28 261 LEIBOWICZ, B 2.7 B- 0.74
29 261 ALTMAN, J 2.7 B- 0.99
30 261 All Professors 3.0 B 0.85
31 305 COHEN, M 3.4 B+ 0.51
32 305 QURESHI, A 3.3 B+ 1.06
33 305 SUN, T 2.7 B- 1.45
34 305 All Professors 3.2 B 0.87
35 306 ADELBERG, A 3.6 B+ 0.59
36 306 STEVENS, M 3.4 B+ 0.48
37 306 All Professors 3.5 B+ 0.57
38 311 BALKARAN, D 3.2 B 0.98
39 311 SATENSTEIN, J 2.8 B- 1.15
40 311 HUANG, Q 2.5 C+ 1.62
41 311 All Professors 2.8 B- 1.26
42 321 QAMAR, Z 3.5 B+ 0.63
43 321 FITZSIMONS, S 2.9 B- 0.61
44 321 UDDIN, M 2.6 C+ 0.95
45 321 DAUBER, N 2.2 C 1.34
46 321 All Professors 2.8 B- 1.09
47 322 FITZSIMONS, S 3.2 B 0.55
48 322 DAUBER, N 3.0 B 0.69
49 322 HITZIG, N 2.4 C+ 0.70
50 322 All Professors 2.7 B- 0.74
51 341 SUH, J 1.8 C- 1.62
52 343 QURESHI, A 3.6 B+ 0.88
53 350 SILVERMAN, A 3.1 B 1.14
54 362 KATZ, J 3.1 B 0.73
55 362 ALTMAN, J 3.0 B 0.85
56 362 All Professors 3.1 B 0.80
57 363 HERCZOG, L 3.5 B+ 0.31
58 363 LINN, D 3.2 B 0.56
59 363 All Professors 3.4 B+ 0.49
60 367 BLUMENFRUCHT, I 3.2 B 0.55
61 367 CALAMARI, J 3.0 B 0.88
62 367 BARONE, E 2.7 B- 0.97
63 367 LEIBOWICZ, B 2.0 C 1.07
64 367 All Professors 2.8 B- 0.89
65 372 BALKARAN, D 3.2 B 0.93
66 372 SILVERMAN, A 2.6 C+ 1.16
67 372 SUN, F 2.6 C+ 0.68
68 372 All Professors 2.8 B- 0.99
69 385 SOLIERI, S 2.8 B- 1.37
70 362W HERCZOG, L 3.6 B+ 0.40
71 362W LINN, D 3.4 B+ 0.55
72 362W SEYMORE, J 3.0 B 0.54
73 362W All Professors 3.3 B+ 0.54
In [10]:
plt.figure()
all_prof_df_results = ACCT_class_analysis[ACCT_class_analysis["PROF"] == 'All Professors']
sns.histplot(all_prof_df_results["STD DEV GPA PROF"], kde = True, color = 'skyblue')
plt.axvline(all_prof_df_results["STD DEV GPA PROF"].mean(), color = 'red', linestyle = 'dashed', linewidth = 1, label = 'Mean')
min_ylim, max_ylim = plt.ylim()
plt.text(all_prof_df_results["STD DEV GPA PROF"].mean() * 1.12, max_ylim * 0.9, 'Mean: {:.2f}'.format(all_prof_df_results["STD DEV GPA PROF"].mean()))

# Generate a color palette with as many colors as classes
colors = sns.color_palette("husl", len(all_prof_df_results))

for idx, (_, row) in enumerate(all_prof_df_results.iterrows()):
    plt.axvline(row["STD DEV GPA PROF"], color = colors[idx], linestyle = 'dotted', linewidth = 0.5, label = row["CLASS NUMBER"])

plt.title("Distribution of Standard Deviations of GPAs")
plt.xlabel("Standard Deviation")
plt.ylabel("Frequency")
plt.legend(loc = 'upper right', bbox_to_anchor = (1.3, 1))  # Adjusted the location to ensure it doesn't overlap with the plot
plt.show()
In [11]:
ACCT_prof_analysis = calculate_teacher_gpas(ACCT_df)
ACCT_prof_analysis
Professors who teach more than one class, have a GPA that is the same or higher than the subject average GPA (2.8), and have a withdrawal percentage that is less or equal than the subject average withdrawal percentage (10.03%):

             PROF  AVG GPA PROF AVG GPA PROF LETTER  STD DEV GPA PROF  \
1       ALTMAN, J           2.8                  B-               1.0   
7        COHEN, M           3.4                  B+               0.5   
12  FITZSIMONS, S           3.1                   B               0.6   
15     HERCZOG, L           3.6                  B+               0.4   
23        LINN, D           3.3                  B+               0.6   
25     QURESHI, A           3.5                  B+               1.0   
28    RUTHIZER, S           2.8                  B-               0.9   
29  SATENSTEIN, J           3.1                   B               1.1   
32   SILVERMAN, A           2.8                  B-               1.2   
34       STEIN, R           3.5                  B+               0.4   

    NUM OF CLASSES  WITHDRAW PERCENTAGE  
1                3                  4.1  
7                2                  6.6  
12               2                  2.7  
15               2                  2.9  
23               2                  5.8  
25               3                  9.5  
28               2                  5.6  
29               3                  6.5  
32               2                  9.6  
34               2                  8.7   

Please note that this automated analysis does not take ratings from RMP (RateMyProfessors) into account. While the provided statistics are based on GPA, it cannot conclude the amount of material students learned from each professor.

The average standard deviation of GPA for all professors in this subject in Spring 2023 was: 1.1
Out[11]:
PROF AVG GPA PROF AVG GPA PROF LETTER STD DEV GPA PROF NUM OF CLASSES WITHDRAW PERCENTAGE
0 ADELBERG, A 3.6 B+ 0.6 1 5.8
1 ALTMAN, J 2.8 B- 1.0 3 4.1
2 BALKARAN, D 3.2 B 0.9 2 10.9
3 BARONE, E 2.9 B- 1.0 2 11.5
4 BLUMENFRUCHT, I 3.2 B 0.5 1 1.7
5 CALAMARI, J 3.0 B 0.9 1 0.0
6 CHAN, J 3.4 B+ 0.7 1 13.8
7 COHEN, M 3.4 B+ 0.5 2 6.6
8 COWAN DOCKERY, M 2.3 C+ 1.3 2 21.1
9 DAUBER, N 2.4 C+ 1.1 3 12.1
10 DAVID, A 2.3 C+ 1.1 2 12.3
11 FEISULLIN, A 3.0 B 0.9 2 11.5
12 FITZSIMONS, S 3.1 B 0.6 2 2.7
13 GRUZA, M 2.1 C 1.3 2 36.8
14 HEASLIP, K 2.4 C+ 1.1 3 12.5
15 HERCZOG, L 3.6 B+ 0.4 2 2.9
16 HITZIG, N 2.4 C+ 0.7 2 4.8
17 HO, V 3.4 B+ 0.5 1 15.0
18 HUANG, Q 2.5 C+ 1.6 1 4.3
19 KATZ, J 3.1 B 0.7 1 10.3
20 KIRSCHNER, D 3.0 B 0.7 1 10.5
21 KUMAR, V 2.6 C+ 1.3 1 25.0
22 LEIBOWICZ, B 2.4 C+ 0.9 2 3.6
23 LINN, D 3.3 B+ 0.6 2 5.8
24 QAMAR, Z 3.5 B+ 0.6 1 7.5
25 QURESHI, A 3.5 B+ 1.0 3 9.5
26 ROSANO, E 2.6 C+ 1.0 1 7.5
27 RUBIN, M 2.6 C+ 0.8 1 21.4
28 RUTHIZER, S 2.8 B- 0.9 2 5.6
29 SATENSTEIN, J 3.1 B 1.1 3 6.5
30 SCHWALB, H 2.7 B- 0.9 1 14.8
31 SEYMORE, J 3.0 B 0.5 1 10.0
32 SILVERMAN, A 2.8 B- 1.2 2 9.6
33 SOLIERI, S 2.8 B- 1.4 1 18.8
34 STEIN, R 3.5 B+ 0.4 2 8.7
35 STEVENS, M 3.4 B+ 0.5 1 10.0
36 SUH, J 1.8 C- 1.6 1 0.0
37 SUN, F 2.6 C+ 1.0 2 10.4
38 SUN, T 2.7 B- 1.4 1 10.5
39 UDDIN, M 2.6 C+ 1.0 1 15.4
40 XIAO, J 1.9 C- 1.4 2 13.9

The following data visualization may not be visible and interactable on websites such as GitHub. To access this scatter plot, download the Jupyter Notebook itself or the HTML file provided¶

In [12]:
# Set the overall average GPA
mean_gpa = 2.8

# Create the scatter plot using Plotly Express
fig = px.scatter(ACCT_prof_analysis, 
                 x = list(range(len(ACCT_prof_analysis))),
                 y = 'AVG GPA PROF',
                 hover_name = 'PROF', # This will show the professor's name when hovering over a point
                 title = "ACCT Professor GPA Averages vs ACCT Subject Average GPA",
                 labels = {'x': 'Professor (By Index Above)', 'y': 'Average GPA'},
                 size_max = 100)

# Add a line for the average GPA
fig.add_shape(
    type = 'line',
    line = dict(dash='dash', color='red'),
    x0 = 0,
    x1 = len(ACCT_prof_analysis),
    y0 = mean_gpa,
    y1 = mean_gpa,
)

# Show the plot
fig.show()
In [13]:
# Count the number of professors with an average GPA at or greater than 3.0 and those less than 3.0
# The red percentage assumes that if a professor's GPA falls in the cutoff (greater than 2.7 but less than 3.0), it will automatically be rounded to a B- (2.7)
green_percentage = ACCT_prof_analysis[ACCT_prof_analysis['AVG GPA PROF'] >= 3.0].shape[0]
red_percentage = ACCT_prof_analysis[ACCT_prof_analysis['AVG GPA PROF'] < 3.0].shape[0]

# Create the values and labels for the pie chart
values = [green_percentage, red_percentage]
labels = ['At or above 3.0 (B or above)', 'At or below 2.7 (B- or below)']

# Define the colors for each section (green and red)
colors = ['#77dd77', '#ff6961']

# Plot the pie chart
plt.figure(figsize = (6, 6))
plt.pie(values, labels = labels, colors = colors, autopct = '%1.1f%%')

# Set the title
plt.title("Average GPA of all ACCT Professors")

# Show the plot
plt.show()

ACCT Analysis by Class¶

Throughout the ACCT subject in Spring 2023, the hardest class based on average GPA was ACCT 101 with an average GPA of 2.5, which is equal to a C+¶

The provided RMP (RateMyProfessors) average ratings will be as of September 2023 and manually provided without the use of web scraping¶

ACCT 100 (Financial and Managerial Accounting) - This is a course in the theories and principles of financial and managerial accounting. Financial accounting includes the study of the preparation and interpretation of commonly used financial statements. Managerial accounting deals with the use of accounting data for managerial control and planning. Students will be introduced to the use of accounting systems programmed for the microcomputer, and to managerial decision making based on mathematical modeling.

Professor:¶

  • Vivian Ho (https://www.ratemyprofessors.com/professor/1742730), AVG GPA: 3.4 (equivalent to a B+), AVG RMP Rating: 3.8/5

ACCT 101 (Introduction to the Theory and Practice of Accounting I) - Fundamentals of accounting information, the foundation of the accounting system for recording assets, liability and equity transactions, financial statement principles, and the preparation and interpretation of basic financial statements. Structure, double-entry model, initial, adjusting, and closing entries are covered.

Professors:¶

  • Joseph Chan (https://www.ratemyprofessors.com/professor/2019604), AVG GPA: 3.4 (equivalent to a B+), AVG RMP Rating: 4.6/5

  • Anita Feisullin (https://www.ratemyprofessors.com/professor/1632337), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.1/5

  • Fang Sun (https://www.ratemyprofessors.com/professor/1987534), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 3.6/5

  • Marvin Gruza (https://www.ratemyprofessors.com/professor/623836), AVG GPA: 2.1 (equivalent to a C), AVG RMP Rating: 2.3/5

  • Scott Ruthizer (https://www.ratemyprofessors.com/professor/139834), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5

  • Eric Rosano (https://www.ratemyprofessors.com/professor/2861879), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 4.5/5

  • Marlene Cowan Dockery (https://www.ratemyprofessors.com/professor/1855770), AVG GPA: 2.3 (equivalent to a C+), AVG RMP Rating: 4/5

  • Jian Xiao (https://www.ratemyprofessors.com/professor/1766712), AVG GPA: 1.9 (equivalent to a C-), AVG RMP Rating: 1.8/5

  • Nicky Dauber (https://www.ratemyprofessors.com/professor/342477), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.5/5

The overall average for ACCT 101 in the Spring 2023 semester: 2.5, which is equivalent to a C+¶


ACCT 102 (Introduction to the Theory and Practice of Accounting II) - A continuation of ACCT 101, with a much more in-depth study of the groundwork and constructed preparation needed in various balance sheet and income statement areas prior to the preparation of financial statements, including managerial accounting with basic quantitative analysis.

Professors:¶

  • Scott Ruthizer (https://www.ratemyprofessors.com/professor/139834), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5

  • Anita Feisullin (https://www.ratemyprofessors.com/professor/1632337), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.1/5

  • Marvin Gruza (https://www.ratemyprofessors.com/professor/623836), AVG GPA: 2.1 (equivalent to a C), AVG RMP Rating: 2.3/5

  • Matthew Rubin (https://www.ratemyprofessors.com/professor/2795005), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 5/5

  • Amy David (https://www.ratemyprofessors.com/professor/327209), AVG GPA: 2.3 (equivalent to a C+), AVG RMP Rating: 4.1/5

The overall average for ACCT 102 in the Spring 2023 semester: 2.5, which is equivalent to a C+¶


ACCT 201 (Intermediate Accounting l) - Intensive study of the theories of financial accounting, generally accepted accounting principles, and applications thereof, including relevant standards, statements, and opinions of the FASB, AICPA, and SEC. Pertinent mathematical principles and applications relating to financial accounting are also presented.

Professors:¶

  • Jeffrey Satenstein (https://www.ratemyprofessors.com/professor/2015333), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 3.6/5

  • Ernest Barone (https://www.ratemyprofessors.com/professor/599563), AVG GPA: 2.9 (equivalent to a B-), AVG RMP Rating: 4/5

  • Kenneth Heaslip (https://www.ratemyprofessors.com/professor/2859471), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5

  • Marlene Cowan Dockery (https://www.ratemyprofessors.com/professor/1855770), AVG GPA: 2.3 (equivalent to a C+), AVG RMP Rating: 4/5

The overall average for ACCT 201 in the Spring 2023 semester: 2.8, which is equivalent to a B-¶


ACCT 202 (Intermediate Accounting II) - Intensive study of the theories of financial accounting, generally accepted accounting principles, and applications thereof, including relevant standards, statements, and opinions of the FASB, AICPA, and SEC. Pertinent mathematical principles and applications relating to financial accounting are also presented.

Professors:¶

  • Helen Schwalb (https://www.ratemyprofessors.com/professor/1702863), AVG GPA: 2.7 (equivalent to a B-), AVG RMP Rating: 3.6/5

  • Vijay Kumar (https://www.ratemyprofessors.com/professor/888937), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 3.9/5

  • Kenneth Heaslip (https://www.ratemyprofessors.com/professor/2859471), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5

The overall average for ACCT 202 in the Spring 2023 semester: 2.6, which is equivalent to a C+¶


ACCT 261 (Business Law I) - Introduction to the law. Seeks to provide majors and nonmajors with an understanding of the law and the social forces that shape it. The basic structure through which law is implemented and enforced is reviewed, in addition to thespecific rules of law relating to contracts, trusts, and estates.

Professors:¶

  • Randy Stein (https://www.ratemyprofessors.com/professor/1124181), AVG GPA: 3.5 (equivalent to a B+), AVG RMP Rating: 4.9/5

  • David Kirschner (https://www.ratemyprofessors.com/professor/210979), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 3.9/5

  • Barry Leibowicz (https://www.ratemyprofessors.com/professor/454843), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5

  • Julie Altman (https://www.ratemyprofessors.com/professor/407653), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5

The overall average for ACCT 261 in the Spring 2023 semester: 3.0, which is equivalent to a B¶


ACCT 305 (Cost Accounting) - The concepts and procedures used to account for the cost of manufacturing and selling, with their practical application in different types of cost accumulation systems (i.e., job-order costing, process costing, joint- product costing, standard costing, and direct costing).

Professors:¶

  • Martin Cohen (https://www.ratemyprofessors.com/professor/2343154), AVG GPA: 3.4 (equivalent to a B+), AVG RMP Rating: 4.3/5

  • Anique Qureshi (https://www.ratemyprofessors.com/professor/2081516), AVG GPA: 3.5 (equivalent to a B+), AVG RMP Rating: 2.3/5

  • Tao Sun (https://www.ratemyprofessors.com/professor/2701815), AVG GPA: 2.7 (equivalent to a B-), AVG RMP Rating: 4.1/5

The overall average for ACCT 305 in the Spring 2023 semester: 3.2, which is equivalent to a B¶


ACCT 306 (Quantitative Techniques in Planning and Control) - The application of quantitative and programming techniques in managerial decision- making, including probability analysis, mathematical programming, network models, queuing theory, Monte Carlo simulation, and regression/correlation analysis, inventory models, and capital budgeting.

Professors:¶

  • Arthur Adelberg (https://www.ratemyprofessors.com/professor/338730), AVG GPA: 3.6 (equivalent to an B+), AVG RMP Rating: 4.5/5

  • Michael Stevens (https://www.ratemyprofessors.com/professor/2176464), AVG GPA: 3.4 (equivalent to a B+), AVG RMP Rating: 3.8/5

The overall average for ACCT 306 in the Spring 2023 semester: 3.5, which is equivalent to a B+¶


ACCT 311 (Advanced Accounting) - Theory of accounting applicable to problems peculiar to large-scale business operations, including business combinations, consolidations, partnerships, foreign exchange translation, segment and interim reporting. Open to declared Accounting majors only.

Professors:¶

  • Dianand Balkaran (https://www.ratemyprofessors.com/professor/590729), AVG GPA: 3.2 (equivalent to a B), AVG RMP Rating: 4.8/5

  • Jeffrey Satenstein (https://www.ratemyprofessors.com/professor/2015333), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 3.6/5

  • Qianyun Huang (https://www.ratemyprofessors.com/professor/1517298), AVG GPA: 2.5 (equivalent to a C+), AVG RMP Rating: 4.3/5

The overall average for ACCT 311 in the Spring 2023 semester: 2.8, which is equivalent to a B-¶


ACCT 321 (Auditing I) - Principles and standards relevant to the attestation function in the practice of professional accountancy including audits, examinations, reviews and agreed-upon procedures. Coverage also includes professional ethics, liability, risk and assurance, evidence, introduction to internal control and reporting. This course provides exposure to the techniques of modern auditing, including the flow charting, analysis, and understanding of accounting cycles and their related control systems, analytical review of financial statements, analytical tests of accounting estimates, and statistical sampling for tests of transactions and accounts.

Professors:¶

  • Zohaib Qamar (https://www.ratemyprofessors.com/professor/2286544), AVG GPA: 3.5 (equivalent to a B+), AVG RMP Rating: 4.6/5

  • Sean Fitzsimons (https://www.ratemyprofessors.com/professor/390216), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 2.8/5

  • Md Uddin (https://www.ratemyprofessors.com/professor/2476413), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 2/5

  • Nicky Dauber (https://www.ratemyprofessors.com/professor/342477), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.5/5

The overall average for ACCT 321 in the Spring 2023 semester: 2.8, which is equivalent to a B-¶


ACCT 322 (Auditing II) - Principles and standards relevant to the attestation function in the practice of professional accountancy including audits, examinations, reviews and agreed-upon procedures. Coverage also includes professional ethics, liability, risk and assurance, evidence, introduction to internal control and reporting. This course provides exposure to the techniques of modern auditing, including the flowcharting, analysis, and understanding of accounting cycles and their related control systems, analytical review of financial statements, analytical tests of accounting estimates, and statistical sampling for tests of transactions and accounts.

Professors:¶

  • Sean Fitzsimons (https://www.ratemyprofessors.com/professor/390216), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 2.8/5

  • Nicky Dauber (https://www.ratemyprofessors.com/professor/342477), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.5/5

  • Neal Hitzig (https://www.ratemyprofessors.com/professor/479473), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 2.9/5

The overall average for ACCT 322 in the Spring 2023 semester: 2.7, which is equivalent to a B-¶


ACCT 341 (Accounting Information Systems) - This course focuses on methods and techniques for the analysis and evaluation of the design of accounting information systems, including computer-based systems. Topics covered will include an introduction to accounting systems theory, analysis of accounting systems, including documentation and design theory, accounting file structure, hardware/ software selection and impact on accounting systems, system life cycle, including accounting controls, and systems implementation and maintenance from the auditor's standpoint. This course will require some use of computer resources.

Professor:¶

  • Jangwon Suh (NO RMP), AVG GPA: 1.8 (equivalent to a C-)

The overall average for ACCT 341 in the Spring 2023 semester: 1.8, which is equivalent to a C-¶


ACCT 343 (Microcomputer Applications in Accounting) - This course deals with specific uses of microcomputers as tools in the discipline of accounting in the following areas: transaction processing, analysis, and report preparation using commercial accounting systems; and mathematical and statistical analysis models that are used for managerial and financial accounting purposes. Software used includes database management systems with translation utilities, permitting transfer of data from one commercial system to another through the use of Data Interchange Formats. Integrated packages are used to prepare reports incorporating analyzed data and graphics.

Professor:¶

  • Anique Qureshi (https://www.ratemyprofessors.com/professor/2081516), AVG GPA: 3.5 (equivalent to a B+), AVG RMP Rating: 2.3/5

The overall average for ACCT 343 in the Spring 2023 semester: 3.6, which is equivalent to a B+¶


ACCT 350 (Financial Statement Analysis) - Analysis is made of financial statements from the perspective of users and preparers of financial reports, including investors, creditors, auditors, accountants, and management. Financial statements and related disclosures will be analyzed to gain a perspective on the company's health.

Professor:¶

  • Arthur Silverman (https://www.ratemyprofessors.com/professor/1449716), AVG GPA: 2.5 (equivalent to a C+), AVG RMP Rating: 4/5

The overall average for ACCT 350 in the Spring 2023 semester: 3.1, which is equivalent to a B¶


ACCT 362 (Business Law II) - The law relating to forms of business organizations. Focus centers on agency and partnership relationships, corporate structure, and the role of government in business. Also considered are landlord relationships and bailments.

Professors:¶

  • Jeffrey Katz (https://www.ratemyprofessors.com/professor/2418919), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 5/5

  • Julie Altman (https://www.ratemyprofessors.com/professor/407653), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5

The overall average for ACCT 362 in the Spring 2023 semester: 3.1, which is equivalent to a B¶


ACCT 362W (Business Law II) - The law relating to forms of business organizations. Focus centers on agency and partnership relationships, corporate structure, and the role of government in business. Also considered are landlord relationships and bailments.

Professors:¶

  • Leo Herczog (https://www.ratemyprofessors.com/professor/2427395), AVG GPA: 3.6 (equivalent to an B+), AVG RMP Rating: 4.5/5

  • David Linn (https://www.ratemyprofessors.com/professor/788206), AVG GPA: 3.3 (equivalent to a B+), AVG RMP Rating: 3.9/5

  • Javier Seymore (https://www.ratemyprofessors.com/professor/843900), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.4/5

The overall average for ACCT 362W in the Spring 2023 semester: 3.3, which is equivalent to a B+¶


ACCT 363 (Business Law III) - The law relating to commercial transactions. Focus of the course is the Uniform Commercial Code, with particular emphasis on sales law, commercial paper law, and the law of secured transactions. Also considered are the laws relating to intellectual property, professional liability, international law, insurance, and bankruptcy.

Professors:¶

  • Leo Herczog (https://www.ratemyprofessors.com/professor/2427395), AVG GPA: 3.6 (equivalent to an B+), AVG RMP Rating: 4.5/5

  • David Linn (https://www.ratemyprofessors.com/professor/788206), AVG GPA: 3.3 (equivalent to a B+), AVG RMP Rating: 3.9/5

The overall average for ACCT 363 in the Spring 2023 semester: 3.4, which is equivalent to a B+¶


ACCT 367 (Federal and New York State Taxes on Income) - An introduction to the federal income tax as it relates to individuals. Particular emphasis is given to the basic multitiered tax structure. The underlying concepts of basis, inclusion, exclusion, and deduction are defined, utilizing the Internal Revenue Code and related material. Special classes of taxpayers including partnerships, estates, trusts, corporations of various types, and foreign taxpayers are considered as well as accounting and procedural rules.

Professors:¶

  • Israel Blumenfrucht (https://www.ratemyprofessors.com/professor/223587), AVG GPA: 3.2 (equivalent to a B), AVG RMP Rating: 3.8/5

  • Joseph Calamari (https://www.ratemyprofessors.com/professor/2396148), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.4/5

  • Ernest Barone (https://www.ratemyprofessors.com/professor/599563), AVG GPA: 2.9 (equivalent to a B-), AVG RMP Rating: 4/5

  • Barry Leibowicz (https://www.ratemyprofessors.com/professor/454843), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5

The overall average for ACCT 367 in the Spring 2023 semester: 2.8, which is equivalent to a B-¶


ACCT 372 (Governmental and Not-for-Profit Accounting and Auditing) - The course focuses on accounting, financial reporting, and auditing relevant to governmental and not-for-profit entities.

Professors:¶

  • Dianand Balkaran (https://www.ratemyprofessors.com/professor/590729), AVG GPA: 3.2 (equivalent to a B), AVG RMP Rating: 4.8/5

  • Fang Sun (https://www.ratemyprofessors.com/professor/1987534), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 3.6/5

  • Arthur Silverman (https://www.ratemyprofessors.com/professor/1449716), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4/5

The overall average for ACCT 372 in the Spring 2023 semester: 2.8, which is equivalent to a B-¶


ACCT 385 (Data Analytics for Accountants) - The course utilizes various Data Analytic Tools (Excel, IDEA, "R", Python, Tableau, XBRL) used by accountants and CPAs in auditing, taxation and consulting services. The emphasis is on hands-on learning by completing projects in the classroom and for homework to develop the data analytic skills valued by employers. An elective course for the Major in Accounting and Information Systems, will satisfy either the “A (Accounting)” or “B (Business or Economics)” elective category.

Professor:¶

  • Steven Solieri (https://www.ratemyprofessors.com/professor/1162635), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 3/5

The overall average for ACCT 385 in the Spring 2023 semester: 2.8, which is equivalent to a B-¶